home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / sendmail / ease-3.5 / README < prev    next >
Encoding:
Text File  |  1991-11-27  |  9.7 KB  |  286 lines

  1. This is release 3.5 of the CFC and Ease programs.
  2.  
  3. Ease is a compiler for sendmail configuration files.  It reads a high-level
  4. mail configuration language and produces a sendmail.cf file.  If you've ever
  5. stared at a sendmail.cf, you know why this is valuable.
  6.  
  7. Cfc is performs the inverse operation: it converts sendmail.cf files
  8. into source for ease.  Combined with ease it allows you to convert a
  9. sendmail.cf file into a more readable format, which you can edit and
  10. convert back into sendmail.cf for installation.
  11.  
  12. There is no longer a reason to complain about the syntax of sendmail.cf files.
  13.  
  14. This is a complete posting of the entire source for 'ease' and "cfc'.
  15. It incorporates all of the previous netwide posting (version 2.0),
  16. plus some additional support for new and undocumented sendmail features.
  17. It supports several vendor-specific versions of Sendmail.
  18.  
  19.  
  20.  
  21. Ease was originally written by James S. Schoner, 
  22.     Purdue University Computing Center,
  23.     West Lafayette, Indiana  47907
  24. Ease 3.0 was developed by Bruce G. Barnett and has been enhanced and
  25. maintained by various persons, most notably
  26.     Arnold D. Robbins (arnold@unix.cc.emory.edu),
  27.     Stephen Schaefer of Bowling Green State University,
  28.     Raymond A. Schnitzler of Bellcore,
  29.     Andrew Partan of the Corporation for Open Systems,
  30.     Rich Salz of Bolt Beranak, and Newman.
  31.     bent@lccinc.UUCP (Ben Taylor)
  32.     "Jonathan I. Kamens" <jik@pit-manager.mit.edu>
  33.     Matt Heffron <heffron@falstaff.css.beckman.com>
  34.     William Roberts <liam@cs.qmw.ac.uk>
  35.     rainer@flyer.uni-duisburg.de (Rainer Bieniek)
  36.     agq@dstos3.dsto.oz.au (Ashleigh Quick)
  37.  
  38. Cfc was written by Arnold D. Robbins, and has been enhanced by Bruce Barnett
  39. (see below).
  40.  
  41. Notable changes to cfc since release 2.0 are described in the note
  42. from Bruce Barnett below.
  43.  
  44.  
  45.     -----------------------------------------------------------
  46.  
  47.             Ease 3.5 Release Notes:
  48.         Bruce G. Barnett <barnett@crdgw1.ge.com>
  49.             November 1991
  50.  
  51. I sent some patches to the authors of Ease several years ago, but they never 
  52. released them. I now have their permission to be the current maintainer of 
  53. Ease and cfc.  Most of the changes to Ease since 2.0 have been mine, with 
  54. some generous patches sent in from the people described above.
  55.  
  56. The main enhancement I added to Ease 3.0:
  57.  
  58.  
  59.     I subjected the Cfc/Ease programs to a test suite
  60.     that converted *.cf files to ease files, and back again.
  61.     I compared the input of cfc  (The original .cf file)
  62.     to the output of ease. The goal was twofold:
  63.  
  64.         1. To automatically produce an Ease file than can
  65.            be used to generate a .cf file identical to the original
  66.         2. To produce an Ease file that can be used without
  67.             editing. You will see warnings, and possible errors 
  68.             that came from the vendor's supplied sendmail.cf
  69.             file. But in a few minutes time, you should have a 
  70.             working, and error free, ease version of your 
  71.             sendmail.cf file.
  72.  
  73.     In other words, you can start using ease as a high level
  74. langauge and feel confident that you won't break anything.
  75.     
  76.  
  77. Current status of Ease 3.5
  78.     It will handle 100% of the standard Ultrix, SunOS, HP, and Berkeley
  79.     versions of sendmail (I hope). It handles 99.5% of the IDA
  80.     enhancement package. It compiles of dozens of different machines.
  81.     See the TODO file for problems.
  82.  
  83.     I don't plan to do any major work maintaining this package,
  84. but I will gladly accept bug fixes and enhancements.
  85.  
  86. New features of the Ease grammar at a glance:
  87.  
  88. Added asm("") command. This can be used to insert something strange into
  89.     the sendmail file. Or something Ease or cfc is too stupid to
  90.     translate properly. This is the work-around for the new/fancy
  91.     stuff.
  92.  
  93. Example:
  94.     asm("Dq$?x$!x <$g>$|$g$.");
  95.  
  96. Added eval()    [$&]
  97.  
  98. SunOS 4.0 support:
  99.     Added m_domain
  100.     Added o_maxempty
  101.     Added o_maxhops    
  102.     Added o_nfs    
  103.     Added o_aliasfile
  104.     Added ypmap()    [${   $} on RHS]
  105.  
  106.     Added default definitions of
  107.         any_in_etc_hosts
  108.         any_in_mydomainname
  109.         any_in_myhostname
  110.  
  111. Ultrix 3.0 support:
  112.     Added f_mail11
  113.     Added ypalias()  [${ on LHS]
  114.     Added yppasswd() [$" on LHS]
  115.  
  116. HP/UX support:
  117.     added o_nameserver    OI
  118.     added program()        $<
  119.  
  120. IDA support:
  121.     Added f_relativize
  122.     Added m_uucpname
  123.     Added o_envelope
  124.     Added f_bsmtp
  125.     Support for Header/Envelope re-write rulesets (S=20/21)
  126.     alias()            $(@    in RHS
  127.     quote()            $!    in headers
  128.  
  129.     resolved():
  130.     #     if (resolved( one_or_more ))    /* found one, return it */
  131.     #         resolve (mailer ($1));
  132.     R$#$+    $#$1
  133.  
  134.     nested rulesets:
  135.     #     if ( one_or_more @. one_or_more ? one_or_more )    /* relativize & return */
  136.     #         resolve (mailer (TCP),
  137.     #                 host ($3 ),
  138.     #                 user (retry (RULESET_28($1@.$2))));
  139.     R$+@.$+?$+    $#TCP$@$3$:$>28 $1@.$2
  140.                 user (retry (RULESET_28($1@.$2))));
  141.  
  142.     canon with default value:
  143.     #     if ( one_or_more @ exactly_one )    /* host: try name server */
  144.     #         return ( $1@ canon ( $2 default (  $2."UUCP ")));
  145.     R$+@$-    $@$1@$[$2$:$2.UUCP $]
  146.  
  147.  
  148.  
  149. ----------------
  150. General Improvements to the Ease Program:
  151.     Improved reporting of syntax errors
  152.     Built in use of /lib/cpp
  153.         if et is given a CPP flag, it will call it.
  154.     If a macro is a single upper case letter, and has not been defined
  155.     the letter assigned to it will be the same as the macro name.
  156.     This allows the original input file to be compared to the ease
  157.     output.
  158.  
  159.     There have been some substantial changes to the grammar handling.
  160.     Several improvements have been made to the error reporting.
  161.     In addition, ease supports the -d flag, which is used to debug
  162.     the parser.  (See the makefile if you are interested in this.)
  163.  
  164.     Several bugs were fixed, including a lot of problems with the ifset()
  165.     construct. It's still not perfect. See the manual page for cfc(local)
  166.  
  167. ----------------------------
  168. Changes to CFC (Sendmail.cf to ease translator):
  169.  
  170.     Added new flags to cfc:
  171.     -s => SunOS
  172.     -i => IDA sendmail
  173.     -d => Ultrix
  174.     -C [..] => add predefined classes 
  175.         e.g. -C ADG => added classes A, B, and G
  176.  
  177. See the file CONVERTING on tips to convert your sendmail file into ease.
  178. I have included some scripts that can compare the original sendmail
  179. file to the output of ease. If the rules are identical, then you can
  180. feel comfortable using ease instead of raw cf.
  181.  
  182.  
  183. --------------
  184. I have included the document TESTING, along with some
  185. shellscripts that I use to perform regression testing of sendmail.
  186. When I make a major change to my sendmail rules, I run a series of
  187. addresses through sendmail and look at the differences. This way I can
  188. check for address rewrite errors before I install a new version.
  189.  
  190. I have also include a document called INTRO, that gives a simple
  191. introduction to sendmail. You may want to look at the file
  192.     debug/Makefile
  193. as this gives you an example how I do it.
  194.  
  195. This package also includes two more goodies:
  196.  
  197.     build-new-aliases - this is a shell script I use to 
  198.         kill sendmail, rebuild the aliases, and restart
  199.         sendmail. The problem is sometimes a kill -15 won't
  200.         immediately stop sendmail from running. This gives
  201.         the daemons a change to clean up first.
  202.  
  203. Also - see the directory test. This includes a shell script to test
  204. sendmail files, written by Simon Kenyon. You have two ways to debug
  205. sendmail files now!
  206.  
  207.  
  208. Release Notes:
  209.  
  210.     3.5:    Documentation and Copyright changes, 
  211.         doc/makefile changed
  212.     3.4:
  213.         generate error if the number of positional parameters on 
  214.         the RHS don't match the LHS, i.e. 
  215.             if (  <@ any_in_myhostname . "LOCAL">: one_or_more)
  216.                 next ($3); /* should be $2 */
  217.     3.3:
  218.         Support for $? $| $. on LHS
  219.             added warning if $. is missing
  220.         Support for $? after $#
  221.         Fix DATA_RW compile option
  222.         Eliminate warnings about "LOCAL" and "ERROR" 
  223.             mailers being undefined. Case doesn't matter.
  224.             but I don't want to convert to lower because the cfdiff
  225.             might complain
  226.     3.2:
  227.     Added better support for IDA sendmail
  228.     Added better support for unusual values in mailer flags, and options
  229.     Better BSD/SYSV Portability (See the Makefile)
  230.     Better support for those machines with read only text areas.
  231.         (See compile flag DATA_RW in makefile)
  232.     The cfstrip and cfdiff script was improved
  233.     The documentation was improved
  234.  
  235. Release 3.1:
  236.     Fixed bug with machines that didn't like free(0).
  237.     Other portability problems
  238.     Added support for MALLOC_DEBUG flag
  239.  
  240. Release 3.0:
  241.     First release of Bruce's changes to the net in alt.sources
  242.  
  243.  
  244.  
  245. NOTE:
  246.  
  247. on some systems (e.g. SunOS) , you will get the warning:
  248.     make: Warning: Infinite loop: Target `lexdefs.h' depends on itself
  249. This is okay. If the line was removed, Make wouldn't work on other machines.
  250. Better a warning than an error on other machines.
  251.  
  252. ============================================================================
  253.  
  254. If you find these programs useful, or if you have suggestions or changes,
  255. please drop me a line. I would really appreciate any patches to this
  256. package. I will merge any patches and release new versions, as they
  257. are sent to me. 
  258.  
  259.     Bruce Barnett
  260.     General Electric
  261.     Corporate Research and Development
  262.     P. O. Box 8, 1 River Road
  263.     Schenectady, NY 12301
  264.  
  265.     barnett@crd.ge.com
  266.  
  267.  
  268.  
  269. Ease was originally written by
  270.     James S. Schoner, Purdue University Computing Center,
  271.               West Lafayette, Indiana  47907
  272. and is copyright (c) 1985 by Purdue Research Foundation.
  273. Redistribution and use in source and binary forms are permitted
  274. provided that: (1) source distributions retain this entire copyright
  275. notice and comment, and (2) distributions including binaries display
  276. the following acknowledgement:  ``This product includes software
  277. developed by Purdue University, Indiana and its contributors''
  278. in the documentation or other materials provided with the distribution
  279. and in all advertising materials mentioning features or use of this
  280. software. Neither the name of the University nor the names of its
  281. contributors may be used to endorse or promote products derived
  282. from this software without specific prior written permission.
  283. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  284. IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  285. WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  286.